package student.aistar.day13;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class WriterHelloDemo {
    public static void main(String[] args) throws Exception {
        test01();
        test02();
        test03();
    }

    private static void test03() {
        //1. 构建一个自动刷新, 但是能够实现追加写入的功能
        //第一个true - 代表的是否追加写入 - true
        //第二个true - 是否自动刷新缓存, 设置成true之后, 那么就不需要在程序代码中手动刷新, 不需要再去写out.flush();
        //            推荐 - 1. 构建一个自动刷新的输出流, 2. 程序代码的之后还是推荐 手动刷新out.flush(),
        //              3. 以任需要关闭流 - jvm
    }

    private static void test01() throws Exception {
        //1. 构建的是一个不自动刷新, 不追加写入的字符输出流
        //每次都会覆盖原来的文件, 并且第一次写入的时候, 会自动创建这个文件的
        PrintWriter out = new PrintWriter(new FileWriter("src\\student\\aistar\\day13\\write.txt"));
        //因为语法糖 - close()操作 - 底层就是关闭流之前, 会强制刷新缓存
        //有可能有部分学生的计算机, 他没有达到强制刷新缓存的效果
        //场景 - 内存中的数据不能写入到磁盘上的这文件中的[文件中的内容是空的]

        //print方法以及println方法
        //print方法写入之后, 后面是没有加一个换行\n
        //println方法写入之后, 后面是有一个换行\n
        //其实也是可以用write方法写入, 只不过没有换行和非空判断

        //把内存中的数据持久化到磁盘中的文件中
        out.write("你是真的很牛皮");
        out.print("沙口");
        out.println("我草泥11马");
        out.print("你是真的帅");
        out.close();

        //推荐在结束的时候, 手动刷新一下缓存, 这样可以避免未使用close方法关闭输入输出流
        //就不会写进去的文件为空
        out.flush();
    }

    private static void test02() throws Exception {
        //1. 构建了一个不自动刷新, 但是能够实现追加写入的功能
        PrintWriter out = new PrintWriter(new FileWriter("src\\student\\aistar\\day13\\write.txt"));
        out.print("python真的很帅");
        out.close();
    }
}
